home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / Film.tv.it.ifs < prev    next >
Text File  |  2005-03-10  |  9KB  |  238 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Pivello (see comments for changes authors)
  8. Title=FilmTV
  9. Description=Get movie info from Film TV
  10. Site=www.Film.TV.it
  11. Language=IT
  12. Version=10.03.2005
  13. Requires=3.5.0
  14. Comments=Modified by:|02.02.2005 adapted to v.3.5.0 (Dinolib)|10.03.2005 Revised for pivlib.pas Library use (Pivello)
  15. License=The source code of the script can be used in another program only if full credits to script author and a link to Ant Movie Catalog website are given in the About box or in the documentation of the program
  16. GetInfo=1
  17.  
  18. [Options]
  19. LargePicture=1|1|0=Get a small picture|1=Try to get the big picture
  20.  
  21. ***************************************************)
  22.  
  23. program FilmTVIt;
  24.  
  25. uses
  26.   Pivlib; // Pivello's scripts common library
  27.  
  28. const
  29.   UrlBase = 'http://www.film.tv.it';
  30.   QueryBase = UrlBase + '/cerca.php?ricerca=avanzata&titolo=';
  31.   QueryFilm = UrlBase + '/scheda.php?film=';
  32.   ImagePath = UrlBase + '/imgbank/';
  33.  
  34.   cStartId = 'Verde"><a href="scheda.php?film='; // ID start marker
  35.   cEndId = '" class="fTitolettoFilm"';           // ID end marker
  36.   cStartTitle = '/> ';                      // Title start marker
  37.   cEndTitle = '</a></span>';                     // Title end marker
  38.   cStartTranslTitle = 'fTitoloFilmBianco">';     // Translated title start marker
  39.   cEndTranslTitle = '</span>';                   // Translated title end marker
  40.   cStartImg = 'img src="imgbank/';               // Image start marker
  41.   cEndImg = '" width="';                         // Image end marker
  42.   cStartGeneric = 'Lite" bgcolor="#5B6E80" valign="top">';
  43.   cEndGeneric = ' ';                        // Generic field marker
  44.   cStartDirector = 'fLinkBianco>';               // Director start marker
  45.   cEndDirector = '</a>';                         // Director end marker
  46.   cStartCast = 'fLinkBianco>';                   // Actor start marker
  47.   cEndCast = '</a>';                             // Actor end marker
  48.   cEndGeneric2 = '</td>';                        // Generic end marker 2
  49.   cBeginDesc = '"La Trama" /></p>';              // Description begin marker
  50.   cStartDesc = '<p class="testo">';              // Description start marker
  51.   cEndDesc = '</p>';                             // Description end marker
  52.   cStartComm = '<p class="testo"><i>';           // Comment start marker
  53.   cEndComm = '</i></p>';                         // Comment end marker
  54.  
  55. var
  56.   MovieUrl, MovieName, OriginalStr, TranslatedStr, PageStr:  string;
  57.  
  58.  
  59. // ---------------------------------
  60. // READ PICTURE
  61. // OUT: none
  62. // ---------------------------------
  63. procedure ReadPicture;
  64. var
  65.   ImageLink: string;
  66. Begin
  67.   ImageLink := ImagePath + getValue(PageStr, cStartImg, cEndImg, true, true);
  68.   PageStr := GetPageStr;
  69.   if Pos('DUMMY/locandina.gif',ImageLink)>0 then
  70.     exit;
  71.   if GetOption('LargePicture')=1 then
  72.     ImageLink := StringReplace(ImageLink,'/LOC/','/GALLERY/');
  73.   GetPicture(ImageLink);
  74. end;
  75.  
  76.  
  77. // -----------------------
  78. // ANALYZE MOVIE DATA PAGE
  79. // IN:  none
  80. // OUT: set Ant fields
  81. // -----------------------
  82. procedure AnalyzeMoviePage;
  83. var
  84.   i, h, m: integer;
  85.   Duration, Description, Cast, TempStr, TempImg, hh, mm: string;
  86. begin
  87.   // Get packed title main page
  88.   PageStr := RemoveExtraChars(MovieUrl);
  89.   // Translated Title field
  90.   SetField(fieldTranslatedTitle, getValue(PageStr, cStartTranslTitle, cEndTranslTitle, true, true));
  91.   PageStr := GetPageStr;
  92.   // Get film image
  93.   ReadPicture;
  94.   // Original Title field
  95.   SetField(fieldOriginalTitle, getValue(PageStr, cStartGeneric, cEndGeneric, true, true));
  96.   PageStr := GetPageStr;
  97.   if(GetField(fieldOriginalTitle)='')then
  98.     SetField(fieldOriginalTitle, GetField(fieldTranslatedTitle));
  99.   // Country field
  100.   SetField(fieldCountry, getValue(PageStr, cStartGeneric, cEndGeneric, true, true));
  101.   PageStr := GetPageStr;
  102.   // YearField
  103.   SetField(fieldYear, getValue(PageStr, cStartGeneric, cEndGeneric, true, true));
  104.   PageStr := GetPageStr;
  105.   // Director Field
  106.   SetField(fieldDirector, getValue(PageStr, cStartDirector, cEndDirector, true, true));
  107.   PageStr := GetPageStr;
  108.   // Actors Field
  109.   Cast := '';
  110.   repeat
  111.     TempStr := getValue(PageStr, cStartCast, cEndCast, true, true);
  112.     PageStr := GetPageStr;
  113.     if ((Cast<>'') and (TempStr<>'')) then
  114.       Cast := Cast + ', ';
  115.     Cast := Cast + TempStr;
  116.   until((TempStr='')or(Length(TempStr)>40));
  117.   SetField(fieldActors, Cast);
  118.   // Category Field
  119.   SetField(fieldCategory, getValue(PageStr, cStartGeneric, cEndGeneric2, true, true));
  120.   PageStr := GetPageStr;
  121.   // Duration field
  122.   TempStr := getValue(PageStr, cStartGeneric, cEndGeneric2, true, true);
  123.   PageStr := GetPageStr;
  124.   SetField(fieldLength, Copy(TempStr,1,Length(TempStr)-1));
  125.   // Producer Field
  126.   //SetField(fieldProducer, getValue(PageStr, , , true, true));
  127.   //PageStr := GetPageStr;
  128.   // Description Field
  129.   Delete(PageStr, 1, Pos(cBeginDesc, PageStr) + Length(cBeginDesc));
  130.   SetField(fieldDescription, getValue(PageStr, cStartDesc, cEndDesc, true, true));
  131.   PageStr := GetPageStr;
  132.   // Comments Field
  133.   SetField(fieldComments, getValue(PageStr, cStartComm, cEndComm, true, true));
  134.   PageStr := GetPageStr;
  135.   // Movie URL field
  136.   SetField(fieldURL, MovieUrl);
  137. end;
  138.  
  139.  
  140. // ------------------------------------------------------------------
  141. // FILL PICKTREE CONTROL WITH LINKS & TITLES or RETURN ONE PAGE LINK
  142. // if OneFilm flag true return Film Id else populate PickTree
  143. // IN:  OneFilm flag (bool)
  144. // OUT: one page ID  (string)
  145. // ------------------------------------------------------------------
  146. function PopulatePickTree(OneFilm: boolean): string;
  147. var
  148.   TempIdFilm: string;
  149.   TempTitle: string;
  150.   StartPos: integer;
  151.   EndPos: integer;
  152. begin
  153.   if OneFilm then
  154.     begin
  155.       StartPos := pos(cStartId, PageStr);
  156.       EndPos := pos(cEndId, PageStr);
  157.       StartPos := StartPos + Length(cStartId);
  158.       TempIdFilm := copy(PageStr, StartPos, EndPos-Startpos); // Get ID
  159.       result := QueryFilm + TempIdFilm;
  160.     end
  161.   else
  162.     begin
  163.       PickTreeClear;
  164.       repeat
  165.         StartPos := pos(cStartId, PageStr);
  166.         EndPos := pos(cEndId, PageStr);
  167.         if StartPos > 0 then
  168.           begin
  169.             StartPos := StartPos + Length(cStartId);
  170.             TempIdFilm := copy(PageStr, StartPos, EndPos-Startpos);  // Get ID
  171.             Delete(PageStr, 1, EndPos);
  172.             StartPos := pos(cStartTitle, PageStr);
  173.             EndPos := pos(cEndTitle, PageStr);
  174.             StartPos := StartPos + Length(cStartTitle);
  175.             TempTitle := copy(PageStr, StartPos, EndPos-Startpos); // Get Title
  176.             PickTreeAdd(TempTitle, QueryFilm + TempIdFilm);
  177.           end;
  178.       until(StartPos = 0);
  179.       result := '';
  180.     end
  181. end;
  182.  
  183.  
  184. // ---------------------------------
  185. // ANALYZE FIRST SEARCH RESULT PAGE:
  186. // IN:  page Url (string)
  187. // OUT: none
  188. // ---------------------------------
  189. procedure AnalyzeSearchPage(Url: string);
  190. var
  191.   FilmId: string;
  192. begin
  193.   PageStr := RemoveExtraChars(Url);
  194.   if pos('Non ho trovato nessun film', PageStr) > 0 then
  195.     ShowMessage('Title not found / Nessun film trovato.')
  196.   else if pos('Si Φ verificato un errore',PageStr) > 0 then
  197.     ShowMessage('Server not available, try later / Server non disponibile, prova pi∙ tardi')
  198.   else
  199.     begin
  200.       if pos('Ho trovato 1 film', PageStr) <> 0 then
  201.         MovieUrl := PopulatePickTree(true)   // One title found
  202.       else
  203.         begin
  204.           PopulatePickTree(false);           // More titles found..
  205.           if not PickTreeExec(MovieUrl) then // ..select one
  206.           exit;
  207.         end;
  208.       AnalyzeMoviePage;
  209.     end;
  210. end;
  211.  
  212.  
  213. // ----------
  214. // MAIN:
  215. // IN:  none
  216. // OUT: none
  217. // ----------
  218. begin
  219.   if CheckVersion(3,5,0) then
  220.     begin
  221.       TranslatedStr := GetField(fieldTranslatedTitle);
  222.       OriginalStr := GetField(fieldOriginalTitle);
  223.       if (TranslatedStr <> '') then
  224.         MovieName := TranslatedStr
  225.       else
  226.         MovieName := OriginalStr;
  227.       if(Input('Film.TV.It - By Pivello (and others)', 'Enter the title of the movie / Inserire titolo del film:', MovieName)) then
  228.         begin
  229.           InitializePivLib;
  230.           MovieUrl := QueryBase + UrlEncode(MovieName);
  231.           AnalyzeSearchPage(MovieUrl);
  232.           FinalizePivLib;
  233.         end;
  234.     end
  235.   else
  236.     ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  237. end.
  238.